home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
os2
/
adaptor.zip
/
ADAPT.ZIP
/
adaptor
/
src
/
movecont.c
< prev
next >
Wrap
Text File
|
1994-01-03
|
21KB
|
929 lines
# include "MoveCont.h"
# include "yyMContr.w"
# include <stdio.h>
# if defined __STDC__ | defined __cplusplus
# include <stdlib.h>
# else
extern void exit ();
# endif
# include "Tree.h"
# include "Definiti.h"
# ifndef NULL
# define NULL 0L
# endif
# ifndef false
# define false 0
# endif
# ifndef true
# define true 1
# endif
# ifdef yyInline
# define yyALLOC(tree, free, max, alloc, nodesize, make, ptr, kind) \
if ((ptr = (tree) free) >= (tree) max) ptr = alloc (); \
free += nodesize [kind]; \
ptr->yyHead.yyMark = 0; \
ptr->Kind = kind;
# else
# define yyALLOC(tree, free, max, alloc, nodesize, make, ptr, kind) ptr = make (kind);
# endif
# define yyWrite(s) (void) fputs (s, yyf)
# define yyWriteNl (void) fputc ('\n', yyf)
# line 19 "MoveControl.puma"
# include <stdio.h>
# include "Idents.h"
# include "StringMe.h"
# include "Types.h"
# include "Shapes.h"
static FILE * yyf = stdout;
static void yyAbort
# ifdef __cplusplus
(char * yyFunction)
# else
(yyFunction) char * yyFunction;
# endif
{
(void) fprintf (stderr, "Error: module MoveControl, routine %s failed\n", yyFunction);
exit (1);
}
static int DistributedVarObject ARGS((tDefinitions o));
int DistributedVariables ARGS((tTree t));
int ArrayExpressions ARGS((tTree t));
static int CountVarMovements ARGS((tTree var, tTree var1));
int CountMovements ARGS((tTree var, tTree exp));
static bool Aligned ARGS((tTree v1, tTree v2));
static void LastDimension ARGS((tTree v, tTree * yyP2, tTree * yyP1));
static void AlignedVarArea ARGS((tTree v1, tTree v2, bool * yyP5, int * yyP4, int * yyP3));
static void LastDimSpec ARGS((tTree v, tTree * yyP9, tTree * yyP8, int * yyP7, int * yyP6));
static bool AlignedVarAccesses ARGS((tTree var1, tTree var2));
static int DistributedVarObject
# if defined __STDC__ | defined __cplusplus
(register tDefinitions o)
# else
(o)
register tDefinitions o;
# endif
{
if (o->Kind == kVarObject) {
if (o->VarObject.decl->Kind == kVAR_DECL) {
if (o->VarObject.decl->VAR_DECL.VAL->Kind == kARRAY_TYPE) {
if (o->VarObject.Dist->Kind == kHostDistribution) {
# line 37 "MoveControl.puma"
return 1;
}
if (o->VarObject.Dist->Kind == kNodeDistribution) {
# line 42 "MoveControl.puma"
return 1;
}
}
}
}
# line 47 "MoveControl.puma"
return 0;
}
int DistributedVariables
# if defined __STDC__ | defined __cplusplus
(register tTree t)
# else
(t)
register tTree t;
# endif
{
# line 53 "MoveControl.puma"
char string[100];
switch (t->Kind) {
case kVAR_OBJ:
# line 57 "MoveControl.puma"
{
# line 58 "MoveControl.puma"
if (t->VAR_OBJ.Object == NoObject)
{ GetString (t->VAR_OBJ.Ident, string);
printf ("DistributedVariables: Object for %s not found\n", string);
exit (-1);
}
}
return DistributedVarObject (t->VAR_OBJ.Object);
case kUSED_VAR:
# line 68 "MoveControl.puma"
return DistributedVariables (t->USED_VAR.VARNAME);
case kLOOP_VAR:
# line 72 "MoveControl.puma"
return 0;
case kINDEXED_VAR:
# line 76 "MoveControl.puma"
return DistributedVariables (t->INDEXED_VAR.IND_VAR) + DistributedVariables (t->INDEXED_VAR.IND_EXPS);
case kADDR:
# line 80 "MoveControl.puma"
return DistributedVariables (t->ADDR.E);
case kDUMMY_EXP:
# line 84 "MoveControl.puma"
return 0;
case kCONST_EXP:
# line 88 "MoveControl.puma"
return 0;
case kARRAY_EXP:
# line 92 "MoveControl.puma"
return DistributedVariables (t->ARRAY_EXP.ELEMENTS);
case kSLICE_EXP:
# line 96 "MoveControl.puma"
return DistributedVariables (t->SLICE_EXP.START) + DistributedVariables (t->SLICE_EXP.STOP) + DistributedVariables (t->SLICE_EXP.INC);
case kOP_EXP:
# line 101 "MoveControl.puma"
return DistributedVariables (t->OP_EXP.OPND1) + DistributedVariables (t->OP_EXP.OPND2);
case kOP1_EXP:
# line 105 "MoveControl.puma"
return DistributedVariables (t->OP1_EXP.OPND);
case kVAR_EXP:
# line 109 "MoveControl.puma"
return DistributedVariables (t->VAR_EXP.V);
case kFUNC_CALL_EXP:
# line 113 "MoveControl.puma"
return DistributedVariables (t->FUNC_CALL_EXP.FUNC_PARAMS);
case kDO_EXP:
# line 117 "MoveControl.puma"
return DistributedVariables (t->DO_EXP.RANGE) + DistributedVariables (t->DO_EXP.BODY);
case kBTE_LIST:
# line 121 "MoveControl.puma"
return DistributedVariables (t->BTE_LIST.Elem) + DistributedVariables (t->BTE_LIST.Next);
case kBTE_EMPTY:
# line 125 "MoveControl.puma"
return 0;
case kBTP_LIST:
# line 129 "MoveControl.puma"
return DistributedVariables (t->BTP_LIST.Elem) + DistributedVariables (t->BTP_LIST.Next);
case kBTP_EMPTY:
# line 133 "MoveControl.puma"
return 0;
case kVAR_PARAM:
# line 137 "MoveControl.puma"
return DistributedVariables (t->VAR_PARAM.V);
}
# line 141 "MoveControl.puma"
{
# line 142 "MoveControl.puma"
printf ("Distributed Variables failed\n");
# line 143 "MoveControl.puma"
FileUnparse (stdout, t);
}
return 0;
}
int ArrayExpressions
# if defined __STDC__ | defined __cplusplus
(register tTree t)
# else
(t)
register tTree t;
# endif
{
# line 155 "MoveControl.puma"
int h;
char string[100];
switch (t->Kind) {
case kVAR_OBJ:
# line 160 "MoveControl.puma"
{
# line 161 "MoveControl.puma"
if (t->VAR_OBJ.Object == NoObject)
{ GetString (t->VAR_OBJ.Ident, string);
printf ("ArrayExpressions: Object for %s not found\n", string);
exit (-1);
}
}
return DistributedVarObject (t->VAR_OBJ.Object);
case kUSED_VAR:
# line 170 "MoveControl.puma"
return ArrayExpressions (t->USED_VAR.VARNAME);
case kLOOP_VAR:
# line 174 "MoveControl.puma"
return 0;
case kINDEXED_VAR:
# line 178 "MoveControl.puma"
{
# line 180 "MoveControl.puma"
h = TreeListLength (t->INDEXED_VAR.IND_EXPS);
if (h>0)
h = ArrayExpressions (t->INDEXED_VAR.IND_EXPS);
else
h = 1;
}
return h;
case kADDR:
# line 189 "MoveControl.puma"
return ArrayExpressions (t->ADDR.E);
case kDUMMY_EXP:
# line 193 "MoveControl.puma"
return 0;
case kCONST_EXP:
# line 197 "MoveControl.puma"
return 0;
case kARRAY_EXP:
# line 201 "MoveControl.puma"
return 1 + ArrayExpressions (t->ARRAY_EXP.ELEMENTS);
case kSLICE_EXP:
# line 205 "MoveControl.puma"
return ArrayExpressions (t->SLICE_EXP.START) + ArrayExpressions (t->SLICE_EXP.STOP) + ArrayExpressions (t->SLICE_EXP.INC) + 1;
case kOP_EXP:
# line 210 "MoveControl.puma"
return ArrayExpressions (t->OP_EXP.OPND1) + ArrayExpressions (t->OP_EXP.OPND2);
case kOP1_EXP:
# line 214 "MoveControl.puma"
return ArrayExpressions (t->OP1_EXP.OPND);
case kVAR_EXP:
# line 218 "MoveControl.puma"
return ArrayExpressions (t->VAR_EXP.V);
case kFUNC_CALL_EXP:
# line 222 "MoveControl.puma"
return ArrayExpressions (t->FUNC_CALL_EXP.FUNC_PARAMS);
case kDO_EXP:
# line 226 "MoveControl.puma"
return ArrayExpressions (t->DO_EXP.RANGE) + ArrayExpressions (t->DO_EXP.BODY);
case kBTE_LIST:
# line 230 "MoveControl.puma"
return ArrayExpressions (t->BTE_LIST.Elem) + ArrayExpressions (t->BTE_LIST.Next);
case kBTE_EMPTY:
# line 234 "MoveControl.puma"
return 0;
case kBTP_LIST:
# line 238 "MoveControl.puma"
return ArrayExpressions (t->BTP_LIST.Elem) + ArrayExpressions (t->BTP_LIST.Next);
case kBTP_EMPTY:
# line 242 "MoveControl.puma"
return 0;
case kVAR_PARAM:
# line 246 "MoveControl.puma"
return ArrayExpressions (t->VAR_PARAM.V);
}
# line 250 "MoveControl.puma"
{
# line 251 "MoveControl.puma"
printf ("Array Expressions failed\n");
# line 252 "MoveControl.puma"
FileUnparse (stdout, t);
}
return 0;
}
static int CountVarMovements
# if defined __STDC__ | defined __cplusplus
(register tTree var, register tTree var1)
# else
(var, var1)
register tTree var;
register tTree var1;
# endif
{
# line 265 "MoveControl.puma"
int vdist, vdist1;
int count;
if (var1->Kind == kINDEXED_VAR) {
# line 270 "MoveControl.puma"
{
# line 272 "MoveControl.puma"
if (! ((TreeDistribution (var1->INDEXED_VAR.IND_VAR) == 0))) goto yyL1;
{
# line 273 "MoveControl.puma"
count = CountMovements (var, var1->INDEXED_VAR.IND_EXPS);
}
}
return count;
yyL1:;
}
# line 277 "MoveControl.puma"
{
# line 278 "MoveControl.puma"
vdist = TreeDistribution (var);
vdist1 = TreeDistribution (var1);
if (vdist1 == 0)
{
count = 0;
}
else if (vdist1 == -1)
{
if (vdist == -1)
count = 0;
else
count = 1;
}
else if (vdist1 == 1)
{
if (vdist == 1)
{
if (AlignedVarAccesses (var,var1))
count = 0;
else
count = 1;
}
else
count = 1;
}
else {
printf ("Mixed variable expression cannot be handled\n");
FileUnparse (stdout, var1); printf ("\n");
exit (-1);
}
}
return count;
}
int CountMovements
# if defined __STDC__ | defined __cplusplus
(register tTree var, register tTree exp)
# else
(var, exp)
register tTree var;
register tTree exp;
# endif
{
# line 320 "MoveControl.puma"
int vdist, edist;
int count;
switch (exp->Kind) {
case kADDR:
# line 325 "MoveControl.puma"
return CountMovements (var, exp->ADDR.E);
case kDUMMY_EXP:
# line 329 "MoveControl.puma"
return 0;
case kCONST_EXP:
# line 333 "MoveControl.puma"
return 0;
case kARRAY_EXP:
# line 337 "MoveControl.puma"
return CountMovements (var, exp->ARRAY_EXP.ELEMENTS);
case kSLICE_EXP:
# line 341 "MoveControl.puma"
return CountMovements (var, exp->SLICE_EXP.START) + CountMovements (var, exp->SLICE_EXP.STOP) + CountMovements (var, exp->SLICE_EXP.INC);
case kOP_EXP:
# line 346 "MoveControl.puma"
return CountMovements (var, exp->OP_EXP.OPND1) + CountMovements (var, exp->OP_EXP.OPND2);
case kOP1_EXP:
# line 350 "MoveControl.puma"
return CountMovements (var, exp->OP1_EXP.OPND);
case kVAR_EXP:
# line 354 "MoveControl.puma"
return CountVarMovements (var, exp->VAR_EXP.V);
case kFUNC_CALL_EXP:
# line 358 "MoveControl.puma"
{
# line 359 "MoveControl.puma"
if (IsIntrFunc (exp))
{
if (IntrFuncKind1 (exp->FUNC_CALL_EXP.FUNC_ID->PROC_OBJ.Ident))
{ count = CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS); }
else if (IntrFuncKind2 (exp->FUNC_CALL_EXP.FUNC_ID->PROC_OBJ.Ident))
{ count = CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS); }
else if (IntrFuncKindn (exp->FUNC_CALL_EXP.FUNC_ID->PROC_OBJ.Ident))
{ count = CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS); }
else if (exp->FUNC_CALL_EXP.FUNC_ID->PROC_OBJ.Ident == MakeIdent ("SPREAD",6))
{ count = CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS); }
else
{
count = 1 + CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS); }
}
else
{
count = CountMovements (var, exp->FUNC_CALL_EXP.FUNC_PARAMS);
}
}
return count;
case kBTE_LIST:
# line 379 "MoveControl.puma"
return CountMovements (var, exp->BTE_LIST.Elem) + CountMovements (var, exp->BTE_LIST.Next);
case kBTE_EMPTY:
# line 383 "MoveControl.puma"
return 0;
case kBTP_LIST:
# line 387 "MoveControl.puma"
return CountMovements (var, exp->BTP_LIST.Elem) + CountMovements (var, exp->BTP_LIST.Next);
case kBTP_EMPTY:
# line 391 "MoveControl.puma"
return 0;
case kVAR_PARAM:
if (exp->VAR_PARAM.V->Kind == kADDR) {
# line 395 "MoveControl.puma"
return CountMovements (var, exp->VAR_PARAM.V);
}
# line 399 "MoveControl.puma"
return CountVarMovements (var, exp->VAR_PARAM.V);
case kUSED_VAR:
# line 403 "MoveControl.puma"
return CountVarMovements (var, exp);
case kINDEXED_VAR:
# line 407 "MoveControl.puma"
return CountVarMovements (var, exp);
}
# line 411 "MoveControl.puma"
{
# line 412 "MoveControl.puma"
printf ("Counting Movements failed\n");
# line 413 "MoveControl.puma"
printf ("var : ");
# line 413 "MoveControl.puma"
FileUnparse (stdout, var);
# line 413 "MoveControl.puma"
printf ("\n");
# line 414 "MoveControl.puma"
WriteTree (stdout, var);
# line 415 "MoveControl.puma"
printf ("exp : ");
# line 415 "MoveControl.puma"
FileUnparse (stdout, exp);
# line 415 "MoveControl.puma"
printf ("\n");
# line 416 "MoveControl.puma"
WriteTree (stdout, exp);
# line 417 "MoveControl.puma"
exit (- 1);
}
return 0;
}
static bool Aligned
# if defined __STDC__ | defined __cplusplus
(register tTree v1, register tTree v2)
# else
(v1, v2)
register tTree v1;
register tTree v2;
# endif
{
if (v1 == NoTree) return false;
if (v2 == NoTree) return false;
if (v1->Kind == kUSED_VAR) {
if (v2->Kind == kUSED_VAR) {
# line 442 "MoveControl.puma"
{
# line 444 "MoveControl.puma"
if (! (v1->USED_VAR.VARNAME->VAR_OBJ.Ident == v2->USED_VAR.VARNAME->VAR_OBJ.Ident)) goto yyL1;
}
return true;
yyL1:;
# line 447 "MoveControl.puma"
{
tTree yyV1;
tTree yyV2;
tTree yyV3;
tTree yyV4;
{
# line 450 "MoveControl.puma"
LastDimension (v1, & yyV1, & yyV2);
# line 456 "MoveControl.puma"
LastDimension (v2, & yyV3, & yyV4);
# line 462 "MoveControl.puma"
if (! (EqualExpression (yyV1, yyV3) == true)) goto yyL2;
{
# line 463 "MoveControl.puma"
if (! (EqualExpression (yyV2, yyV4) == true)) goto yyL2;
}
}
return true;
}
yyL2:;
}
}
return false;
}
static void LastDimension
# if defined __STDC__ | defined __cplusplus
(register tTree v, register tTree * yyP2, register tTree * yyP1)
# else
(v, yyP2, yyP1)
register tTree v;
register tTree * yyP2;
register tTree * yyP1;
# endif
{
if (v == NoTree) return;
if (v->Kind == kUSED_VAR) {
# line 468 "MoveControl.puma"
{
struct_shape s;
tTree low;
tTree up;
{
# line 470 "MoveControl.puma"
# line 472 "MoveControl.puma"
# line 473 "MoveControl.puma"
# line 475 "MoveControl.puma"
GetCurrentShape (v, &s);
low = s.bounds[s.rank-1][0];
up = s.bounds[s.rank-1][1];
}
* yyP2 = low;
* yyP1 = up;
return;
}
}
;
}
static void AlignedVarArea
# if defined __STDC__ | defined __cplusplus
(register tTree v1, register tTree v2, register bool * yyP5, register int * yyP4, register int * yyP3)
# else
(v1, v2, yyP5, yyP4, yyP3)
register tTree v1;
register tTree v2;
register bool * yyP5;
register int * yyP4;
register int * yyP3;
# endif
{
if (v1 == NoTree) return;
if (v2 == NoTree) return;
if (v1->Kind == kUSED_VAR) {
if (v2->Kind == kUSED_VAR) {
# line 493 "MoveControl.puma"
{
tTree yyV1;
tTree yyV2;
int yyV3;
int yyV4;
{
# line 495 "MoveControl.puma"
if (! (v1->USED_VAR.VARNAME->VAR_OBJ.Ident == v2->USED_VAR.VARNAME->VAR_OBJ.Ident)) goto yyL1;
{
# line 496 "MoveControl.puma"
LastDimSpec (v1, & yyV1, & yyV2, & yyV3, & yyV4);
}
}
* yyP5 = true;
* yyP4 = - yyV3;
* yyP3 = yyV4;
return;
}
yyL1:;
# line 500 "MoveControl.puma"
{
tTree yyV1;
tTree yyV2;
int yyV3;
int yyV4;
tTree yyV5;
tTree yyV6;
int yyV7;
int yyV8;
{
# line 503 "MoveControl.puma"
LastDimSpec (v1, & yyV1, & yyV2, & yyV3, & yyV4);
# line 504 "MoveControl.puma"
LastDimSpec (v2, & yyV5, & yyV6, & yyV7, & yyV8);
# line 506 "MoveControl.puma"
if (! (EqualExpression (yyV1, yyV5) == true)) goto yyL2;
{
# line 507 "MoveControl.puma"
if (! (EqualExpression (yyV2, yyV6) == true)) goto yyL2;
{
# line 511 "MoveControl.puma"
if (! ((yyV7 >= yyV3))) goto yyL2;
{
# line 512 "MoveControl.puma"
if (! ((yyV8 >= yyV4))) goto yyL2;
}
}
}
}
* yyP5 = true;
* yyP4 = yyV3 - yyV7;
* yyP3 = yyV8 - yyV4;
return;
}
yyL2:;
}
}
# line 515 "MoveControl.puma"
* yyP5 = false;
* yyP4 = 0;
* yyP3 = 0;
return;
;
}
static void LastDimSpec
# if defined __STDC__ | defined __cplusplus
(register tTree v, register tTree * yyP9, register tTree * yyP8, register int * yyP7, register int * yyP6)
# else
(v, yyP9, yyP8, yyP7, yyP6)
register tTree v;
register tTree * yyP9;
register tTree * yyP8;
register int * yyP7;
register int * yyP6;
# endif
{
if (v == NoTree) return;
if (v->Kind == kUSED_VAR) {
# line 538 "MoveControl.puma"
{
tTree yyV1;
tTree yyV2;
int yyV3;
int yyV4;
{
# line 540 "MoveControl.puma"
LastDimSpec (ArrayFormals (v->USED_VAR.VARNAME->VAR_OBJ.Object), & yyV1, & yyV2, & yyV3, & yyV4);
}
* yyP9 = yyV1;
* yyP8 = yyV2;
* yyP7 = yyV3;
* yyP6 = yyV4;
return;
}
}
if (v->Kind == kTYPE_LIST) {
if (v->TYPE_LIST.Elem->Kind == kDYNAMIC) {
if (v->TYPE_LIST.Elem->DYNAMIC.Shape->Kind == kSLICE_EXP) {
if (v->TYPE_LIST.Next->Kind == kTYPE_EMPTY) {
# line 543 "MoveControl.puma"
* yyP9 = v->TYPE_LIST.Elem->DYNAMIC.Shape->SLICE_EXP.START;
* yyP8 = v->TYPE_LIST.Elem->DYNAMIC.Shape->SLICE_EXP.STOP;
* yyP7 = v->TYPE_LIST.Elem->DYNAMIC.left_overlap;
* yyP6 = v->TYPE_LIST.Elem->DYNAMIC.right_overlap;
return;
}
}
}
if (v->TYPE_LIST.Elem->Kind == kINDEX_TYPE) {
if (v->TYPE_LIST.Next->Kind == kTYPE_EMPTY) {
# line 547 "MoveControl.puma"
* yyP9 = v->TYPE_LIST.Elem->INDEX_TYPE.LOWER;
* yyP8 = v->TYPE_LIST.Elem->INDEX_TYPE.UPPER;
* yyP7 = v->TYPE_LIST.Elem->INDEX_TYPE.left_overlap;
* yyP6 = v->TYPE_LIST.Elem->INDEX_TYPE.right_overlap;
return;
}
}
if (v->TYPE_LIST.Next->Kind == kTYPE_EMPTY) {
# line 551 "MoveControl.puma"
{
# line 552 "MoveControl.puma"
printf ("Illegal last index in LastDimSpec\n");
# line 553 "MoveControl.puma"
WriteTree (stdout, v);
# line 554 "MoveControl.puma"
kill_in_protocol ();
}
* yyP9 = NoTree;
* yyP8 = NoTree;
* yyP7 = 0;
* yyP6 = 0;
return;
}
# line 557 "MoveControl.puma"
{
tTree yyV1;
tTree yyV2;
int yyV3;
int yyV4;
{
# line 559 "MoveControl.puma"
LastDimSpec (v->TYPE_LIST.Next, & yyV1, & yyV2, & yyV3, & yyV4);
}
* yyP9 = yyV1;
* yyP8 = yyV2;
* yyP7 = yyV3;
* yyP6 = yyV4;
return;
}
}
# line 562 "MoveControl.puma"
{
# line 564 "MoveControl.puma"
printf ("Illegal Tree in LastDimSpec\n");
# line 565 "MoveControl.puma"
WriteTree (stdout, v);
# line 566 "MoveControl.puma"
kill_in_protocol ();
}
* yyP9 = NoTree;
* yyP8 = NoTree;
* yyP7 = 0;
* yyP6 = 0;
return;
;
}
static bool AlignedVarAccesses
# if defined __STDC__ | defined __cplusplus
(register tTree var1, register tTree var2)
# else
(var1, var2)
register tTree var1;
register tTree var2;
# endif
{
if (var1 == NoTree) return false;
if (var2 == NoTree) return false;
if (var1->Kind == kUSED_VAR) {
if (var2->Kind == kUSED_VAR) {
# line 594 "MoveControl.puma"
{
bool yyV1;
int yyV2;
int yyV3;
{
# line 595 "MoveControl.puma"
AlignedVarArea (var1, var2, & yyV1, & yyV2, & yyV3);
# line 596 "MoveControl.puma"
if (! ((yyV1 == true))) goto yyL1;
}
return true;
}
yyL1:;
}
if (var2->Kind == kINDEXED_VAR) {
# line 599 "MoveControl.puma"
{
bool yyV1;
int yyV2;
int yyV3;
{
# line 600 "MoveControl.puma"
AlignedVarArea (var1, var2->INDEXED_VAR.IND_VAR, & yyV1, & yyV2, & yyV3);
# line 601 "MoveControl.puma"
if (! ((yyV1 == true))) goto yyL2;
}
return true;
}
yyL2:;
}
}
if (var1->Kind == kINDEXED_VAR) {
if (var2->Kind == kUSED_VAR) {
# line 604 "MoveControl.puma"
{
bool yyV1;
int yyV2;
int yyV3;
{
# line 605 "MoveControl.puma"
AlignedVarArea (var1->INDEXED_VAR.IND_VAR, var2, & yyV1, & yyV2, & yyV3);
# line 606 "MoveControl.puma"
if (! ((yyV1 == true))) goto yyL3;
}
return true;
}
yyL3:;
}
if (var2->Kind == kINDEXED_VAR) {
# line 609 "MoveControl.puma"
{
bool yyV1;
int yyV2;
int yyV3;
bool found1;
int val;
{
# line 613 "MoveControl.puma"
AlignedVarArea (var1->INDEXED_VAR.IND_VAR, var2->INDEXED_VAR.IND_VAR, & yyV1, & yyV2, & yyV3);
# line 615 "MoveControl.puma"
if (! ((yyV1 == true))) goto yyL4;
{
# line 617 "MoveControl.puma"
# line 618 "MoveControl.puma"
# line 620 "MoveControl.puma"
GetConstDifference (LastIndex (var2->INDEXED_VAR.IND_EXPS), LastIndex (var1->INDEXED_VAR.IND_EXPS), & found1, & val);
# line 627 "MoveControl.puma"
if (! ((found1 == true))) goto yyL4;
{
# line 628 "MoveControl.puma"
if (! ((val >= yyV2))) goto yyL4;
{
# line 629 "MoveControl.puma"
if (! ((val <= yyV3))) goto yyL4;
}
}
}
}
return true;
}
yyL4:;
}
}
return false;
}
void BeginMoveControl ()
{
}
void CloseMoveControl ()
{
}